/**
 * \file reception.c
 * \author H4201
 */

/* MODULES USED */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include "reception.h"
#include "../interface/messqueue.h"
#include "../messages/traducteur_message.h"

/*EXPORTED FUNCTIONS*/

/**
 * Fonction pour lire un message sur le socket passé en paramètre
 * @param[in] client_sockfd Le socket dans lequel lire le message
 * @return Le message lu dans le socket
 */
message_t recevoir(int client_sockfd) {
    int n;
    message_t message;
    char buffer[256];

    // Lecture
    bzero(buffer, 256);
    n = read(client_sockfd, buffer, 255);
    // Erreur de lecture
    if (n < 0) {
        perror("ERROR reading from socket");
        exit(EXIT_FAILURE);
    // Fin du fichier
    } else if (n == 0) {
        message.type = -1;
        message.params[0] = -1;
    // Décodage du message
    } else {
        message = deserialiser_message(buffer);
    }
    
    return message;
}
